import { CreateDateColumn, UpdateDateColumn, DeleteDateColumn } from "typeorm";

/**
 * 基础实体抽象类
 *
 * 为所有实体提供统一的时间戳字段：
 * - createdAt: 创建时间
 * - updatedAt: 更新时间
 * - deletedAt: 软删除时间
 *
 * 所有业务实体都应继承此类以确保数据一致性和审计能力
 */
export abstract class BaseEntity {
  /**
   * 创建时间
   * 记录数据首次插入数据库的时间
   */
  @CreateDateColumn({
    type: "timestamp",
    comment: "创建时间",
  })
  createdAt: Date;

  /**
   * 更新时间
   * 记录数据最后一次修改的时间
   */
  @UpdateDateColumn({
    type: "timestamp",
    comment: "更新时间",
  })
  updatedAt: Date;

  /**
   * 软删除时间
   * 启用软删除功能，删除时不会真正从数据库中移除记录
   * 而是设置此字段的值，查询时会自动过滤已删除的记录
   */
  @DeleteDateColumn({
    type: "timestamp",
    comment: "删除时间",
    nullable: true,
  })
  deletedAt?: Date;
}
